#include <stdio.h>
#include <math.h>
 #include <stdlib.h>
//#include <windows.h>
void test1()
{
   int year;  //年份
   //scanf("%d",&year);
    year=1988;
   while(year<=2016)
   {
    if(year%400==0)
    {
            printf("%d是世纪闰年！\n",year);

    }
    else if((year%4==0&&year%100!=0))
    {
            printf("%d是普通闰年！\n",year);
    } 
    else
    {
            //printf("%d不是闰年！\n",year);
    }
        year++;
   }
  
}
void test2()
{
    int score; //分数
    printf("请输入0-100的分数:->");
    scanf("%d",&score);
    if(score>=0&&score<60)
    {
        printf("你的等级为D\n");
    } else if(score>=60&&score<80)
    {
        printf("你的等级为C\n");
    }else if(score>=80&&score<90)
    {
        printf("你的等级为B\n");
    }else if(score>=90&&score<=100)
    {
        printf("你的等级为A\n");
    } else
    {
        printf("你输入的分数不符合条件\n");
    }   
}
void test3()
{ //判断奇偶性
   int number = 0;
   printf("请输入一个数:->");
   scanf("%d",&number);
   if(number%2==0)
   {
        printf("是偶数\n");
       if(number%4==0)
       {
         printf("能被4整除\n");
       } 
       else
       {
         printf("不能被4整除\n");
       }
   } 
   else
   {
      printf("是奇数\n");
       if(number%3==0)
       {
         printf("能被3整除\n");
       } 
       else
       {
         printf("不能被3整除\n");
       }
   }
}

void test4()
{ //版本1
   int number=0;
   int sum=0;
   while(1)
   {
    printf("请输入合法的数据:->");
     if(scanf("%d",&number)==1)
     {
      sum+=number;
     } 
     else
     {
          break;
     }
   }
   printf("总和：%d\n",sum);
}
void test5()
{
  int a,b;
  char c;
  int sum=0;
  scanf("%d %c %d",&a,&c,&b);
  switch(c)
  {
    case '+' :
       sum=a+b;break;
    case '-':
       sum=a-b;break;
       case '*':
       sum=a*b;break;
       case '/':
       sum=a/b;break;
       default:
        printf("输入不合法!\n");break;
  }
  printf("%d\n",sum);
}

void test6()
{ //版本1
    double number = 0;
    double sum = 0;
        printf("请输入合法的数据:->");
        while(scanf("%lf", &number) == 1)
        {
             char c=getchar();
             if (c == '\n')
             {
                 printf("请输入合法的数据:->");
             }
            sum += number;
        }
    printf("总和：%.2lf\n", sum);
}

void test7()
{//打印九九乘法表
  int i=1,j=1;
  for(i=1;i<=9;i++)
  {
    for(j=1;j<=i;j++)
    {
       printf("%2d*%2d=%2d ",j,i,i*j);
    }
    printf("\n");
  }
   
    printf("\n");

     for(i=9;i>=1;i--)
  {
    for(j=1;j<=i;j++)
    {
       printf("%2d*%2d=%2d ",j,i,i*j);
    }
    printf("\n");
  }
    printf("\n");


   for(i=9;i>=1;i--)
  {
       int k=9-i;
      while(k)
      {
        printf("%2c %2c %2c ",' ',' ',' ');
        k--;
      }
    for(j=1;j<=i;j++)
    {
     
       printf("%2d*%2d=%2d ",j,i,i*j);
    }
    printf("\n");
  }
}

void test8()
{ //打印0-n的素数
   unsigned int n=0;
   printf("输入一个正整数:->");
   scanf("%d",&n);
   unsigned int i=2;  //确定素数
   unsigned int k=0;  //因子
   while(i<=n)
   {
    int flat=1;  //控制哨兵
     k=i;
     for(int j=2;j < k;j++)
     {
       if(i%j==0)
       {
         flat=0;
         break;
       }
     }
     if(flat==1)
     printf("%d\n",i);
     i++;
   }
}

void test9()
{
  int a,b;
  printf("输入两个正整数:->");
  scanf("%d %d",&a,&b);
  while(a<=b)
  {
    printf("%d ",a);
    a++;
  }
  printf("\n");
}

int Getday(int n,int month1)
{//得到[month1,month2_1)的天数
   
   int arr[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
   int sum=0;
     while(n)
     {
          sum+=arr[month1];
          n--;
          month1++;
     }
    return sum;
}

int Get_monthday(int month1,int year1,int month2_1,int year2)
{//得到[month1,12]的天数
 //得到[1,month2-1]天数
   int arr1[13]={0,365,334,306,275,245,214,184,153,122,92,61,31};
   int arr2[13]={0,31,59,90,120,151,181,212,243,273,304,334,365};
   if(year1!=year2)
   {
     int month2=month2_1-1;
      if(((year1%4==0&&year1%100!=0)||(year1%400==0))&&month1<=2)
      {//闰年
          arr1[month1]+=1;
      }
      if(((year2%4==0&&year2%100!=0)||(year2%400==0))&&month2>=2)
      {//闰年
          arr2[month2]+=1;
      }
    return arr1[month1]+arr2[month2];
   }
   else
   {
          if(month1==month2_1)
          {
             return 0;
          }
          else if(month1 < month2_1)
          {
               int n=month2_1-month1;
               return Getday( n, month1);
          }
   }
}

int Getyear(int birth_year1,int now_year1)
{//获取年数[birth_yea+1,now_year-1]
   int sum_year=0;
   int birth_year=birth_year1+1;
   int now_year = now_year1-1;
   if(birth_year<=now_year)
   {
      for(;birth_year<=now_year;birth_year++)
      {
          if((birth_year%4==0&&birth_year%100!=0)||(birth_year%400==0))
          {
            sum_year+=366;
          }
          else
          {
              sum_year+=365;
          }
      }
      return sum_year;
   }
   else
   {
        return 0;
   }
}


void test10()
{//生命计算器
   int birth_year,birth_month,birth_day;
   int now_year,now_month,now_day;
   char c1,c2;
   printf("请输入你的生日:->");
   scanf("%d %c %d %c %d",&birth_year,&c1,&birth_month,&c2,&birth_day);
   //printf("%d%c%d%c%d",year,c1,month,c2,day);
   printf("请输入今年日期:->");
   scanf("%d %c %d %c %d",&now_year,&c1,&now_month,&c2,&now_day);
  
    int days=0;
    int year=Getyear(birth_year,now_year);
    int month=Get_monthday(birth_month,birth_year,now_month,now_year);
    int day=now_day-birth_day;
     days=year+month+day;
    printf("你在这个世界上共生存了%d天\n",days);

}

void test11()
{
  printf("请输入一个正整数:->");
  int num;
  int n=0; //计数
  scanf("%d",&num);
  printf("反数:");
  do
  {
  printf("%d",num%10);
    n++;
  }while(num/=10);
  printf("\n");
  printf("%d位数\n",n);

}

void test12()
{
  int n=0;
  scanf("%d",&n);
  for(int i=1;i<n;i++)
  {
    printf("%d\n",i);
  }

  for(int i=1;i<=5;i++)
  {
    for(int j=0;j<=i;j++)
    {
      printf("%d ",j);
    }
    printf("\n");
  }
}

void test13()
{//求水仙花
  
  int num;
  printf("水仙花：");
  for(num=100;num<1000;num++)
  {
      int a=num;
      int sum=0;
      while(a)
      {
         sum=sum+((a%10)*(a%10)*(a%10));
         a=a/10;
      }
      if(sum==num)
      printf("%d ",num);  
  }
   printf("\n");
}

void test14()
{//求最小公倍数和最大公约数
   int m,n;
   scanf("%d %d",&m,&n);
   int max= n>=m ? n : m;
   int min= n<m ? n: m;
    printf("最小公倍数:");
   for(int i=1;i<=max;i++)
   {
        if(i*min==max)
        {
          printf("%d",max);
          break;
        } 
       for(int j=2;i*min > max;j++)
        {
           max=max*j;
           break;
        } 
   }
   printf("\n最大公约数:");
    for(int i=1;i<=min;i++)
    {
        if(m%i==0&&n%i==0)
          {
            max=i;
            printf("%d\n",max);
            break;
          }
    }
}

void test15()
{//打印
  int num=0;
  scanf("%d",&num);
  for(int a=num/2;a>=1;a--)
  {
           int sum=a;
           int k=a+1;
        for(;k<num;k++)
        {
            sum+=k;
            if(sum>num)
            {
              break;
            }
            else if(sum==num)
            {
              k=k+1;
              break;
            }
        }
      int flag=a;
      if(sum==num)
      {
        printf("%d=",num);
        for(;flag < k;flag++)
        {
           printf("%d",flag);
            if(flag!=k-1)
            printf("+");
        }
         printf("\n");
      }
  }
}

void test16()
{//一根棍子分成任意三段，求出能构成三角行的概率
  int num=0;
  int a,b,c;
  int n=0,N=0;
  scanf("%d",&num);
  // for(a=1;a<num;a++)
  // {
  //   for(b=1;b<num;b++)
  //   {
  //       int c=num-a-b;
  //       if(a+b+c==num)
  //       {
  //         if(a+b>c&&a+c>b&&b+c>a)
  //         {
  //               n++;
  //         }
  //             N++;
  //       }
  //   }
  // }
  
  for(a=1;a<num;a++)
  {
      for(b=1;b<num;b++)
      {
          if(((a-num/2)*(b-num/2)<0)&&(abs(a-b)<=num/2))
          {
              n++;
          }
          N++;
      }
  }
  
 printf("%.2lf\n",n/(N*1.0));
 
}


void test17()
{//求完数
  int sum=0;
  int num=1;
  int i=1;
  for(num=1;num<1000;num++)
  {
      sum=0;
    for(i=1;i<num;i++)
      {
        if(num%i==0)
        {
          sum+=i;
        }
      }
    if(sum==num)
    {
      printf("%d ",num);
    }
  }
  
}
int main()
{
   
    test17();
  // system("pause");
    return 0;
}